home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / bbbbs85.lha / rexx / bbsKillUser.rexx < prev    next >
OS/2 REXX Batch file  |  1994-12-04  |  3KB  |  164 lines

  1. /* $VER: bbsKillUser.rexx 8.3 (4.12.94)
  2. copyright ⌐ 1990-94 Richard Lee Stockton
  3. BBBBS Delete User
  4. FREELY DISTRIBUTABLE
  5. */
  6.  
  7. SIGNAL ON BREAK_C
  8. SIGNAL ON FAILURE
  9. SIGNAL ON SYNTAX
  10.  
  11. lineup='1B'x'M'
  12. CR=''
  13. frombb=0
  14. IF ADDRESS()='BAUD' THEN
  15.   DO
  16.     frombb=1
  17.     CR='0D'x
  18.   END
  19.  
  20. ARG in_name .
  21. name=''
  22. IF in_name~='' THEN name=in_name
  23.  
  24. bbspath=GETCLIP('BBS_path')
  25. IF bbspath='' THEN
  26.   DO
  27.     SAY 'No BBS_path!'
  28.     EXIT 20
  29.   END
  30.  
  31. killcount=0
  32. DO loop=1
  33.   IF name='' THEN
  34.     DO
  35.       OPTIONS PROMPT 'RETURN=QUIT  Username to Kill: '
  36.       PULL name
  37.     END
  38.   IF STRIP(name)='' THEN LEAVE loop
  39.   name=SPACE(STRIP(UPPER(name)),1,'_')
  40.   IF readlines(bbspath'Users/'name 1) THEN
  41.     DO
  42.       SAY 'User' name 'not found.'CR
  43.       name=''
  44.       ITERATE loop
  45.     END
  46.   IF level<=lynes.20 THEN
  47.     DO
  48.       SAY '*** Tsk! Tsk!  Your level is not greater than' name'.'CR
  49.       CALL send2log('Tried to kill:' name)
  50.       name=''
  51.       ITERATE loop
  52.     END
  53.   IF getinput(1 1 'Really kill' name'? (nY) > ')='N' THEN
  54.     DO
  55.       name=''
  56.       ITERATE loop
  57.     END
  58.   f0='Morgue/'name'.lha'
  59.   f1='Users/'name
  60.   f2='Friends/'name
  61.   f3='Profiles/'name
  62.   f4='Email/'name
  63.   f5='EmailFiles/'name
  64.   IF EXISTS(bbspath'Morgue') THEN
  65.     IF getinput(1 1 'Archive' name 'to Morgue? (Ny) > ')='Y' THEN
  66.       ADDRESS COMMAND 'CD' bbspath'0A'x||'lha -2ar a' f0 f1 f2 f3 f4 f5
  67.   CALL DELETE(bbspath||f1)
  68.   CALL DELETE(bbspath||f2)
  69.   CALL DELETE(bbspath||f3)
  70.   IF EXISTS(bbspath||f4) THEN ADDRESS COMMAND 'C:DELETE >*' bbspath||f4 'ALL'
  71.   IF EXISTS(bbspath||f5) THEN ADDRESS COMMAND 'C:DELETE >*' bbspath||f5 'ALL'
  72.   SAY CR
  73.   SAY CR'User file, Email & EmailFiles for' name 'have been deleted.'CR
  74.   IF EXISTS(bbspath||f0) THEN SAY f0 'is' WORD(STATEF(bbspath||f0),2) 'bytes.'
  75.   CALL send2log('Killed' name)
  76.   killcount=killcount+1
  77.   name=''
  78.   IF in_name~='' THEN LEAVE loop
  79. END
  80. IF killcount>0 THEN
  81.   DO
  82.     CALL DELETE(bbspath'Lists/USERS')
  83.     IF SHOW('P','BBBBS') THEN CALL SETCLIP('BBS_localusers',1)
  84.     IF SHOW('P','BBBBS_LOCAL') THEN CALL SETCLIP('BBS_mainusers',1)
  85.   END
  86. EXIT
  87.  
  88.  
  89. readlines:
  90. CALL CLOSE(f)
  91. PARSE ARG tempname readstart .
  92. IF OPEN(f,tempname,'R')=0 THEN RETURN 1
  93. IF readstart<2 THEN lynes.=''
  94. DO ri=readstart
  95.   line=READLN(f)
  96.   IF EOF(f) THEN BREAK
  97.   lynes.ri=line
  98. END
  99. lynes.0=ri-1
  100. CALL CLOSE(f)
  101. DO ri=lynes.0 TO 0 BY -1 WHILE LENGTH(lynes.ri)=0 | LEFT(UPPER(lynes.ri),1)='/'
  102. END
  103. lynes.0=ri
  104. RETURN 0
  105.  
  106.  
  107. send2log:
  108. PARSE ARG sendline
  109. IF ~frombb THEN RETURN
  110. logfile=bbspath'Logs/log.'DATE('S')
  111. fl='W'
  112. IF EXISTS(logfile) THEN fl='A'
  113. IF ~OPEN('log',logfile,fl) THEN
  114.   DO
  115.     CALL DELAY(99)
  116.     IF ~OPEN('log',logfile,fl) THEN
  117.       DO
  118.         SAY 'failed to open log file'CR
  119.         RETURN
  120.       END
  121.   END
  122. CALL WRITELN('log','bbsKillUser:' sendline)
  123. CALL CLOSE('log')
  124. RETURN
  125.  
  126.  
  127. getinput:
  128. PARSE ARG upflag' 'oneflag' 'pline
  129. OPTIONS PROMPT pline
  130. PARSE PULL inarg
  131. inarg=STRIP(inarg)
  132. IF upflag THEN inarg=UPPER(inarg)
  133. IF oneflag THEN inarg=LEFT(inarg,1)
  134. inarg=cleanstring(inarg)
  135. RETURN inarg
  136.  
  137.  
  138. cleanstring:
  139. PARSE ARG cstr
  140. bot=XRANGE(,'1F'x)
  141. top=XRANGE('7F'x)
  142. cstr=COMPRESS(cstr,bot||top)
  143. IF nflag=0 THEN cstr=STRIP(cstr)
  144. RETURN cstr
  145.  
  146.  
  147. BREAK_C:
  148. EXIT
  149.  
  150.  
  151. FAILURE:
  152. SYNTAX:
  153. lin.1=''ERRORTEXT(RC)''
  154. lin.2=SIGL-1     SOURCELINE(SIGL-1)
  155. lin.3=SIGL ''SOURCELINE(SIGL)''
  156. lin.4=SIGL+1     SOURCELINE(SIGL+1)
  157. DO er=1 TO 4
  158.   IF level>sysoplevel | ~frombb THEN SAY 'bbsKillUser:' lin.er||CR
  159.   CALL send2log(lin.er)
  160. END
  161. EXIT
  162.  
  163. /* bbsKillUser.rexx */
  164.